package com.wyp168.leetcode;

/**
 * @ClassName SolveEquation
 * @Description TODO  求解一个给定的方程，将x以字符串 "x=#value" 的形式返回。该方程仅包含 '+' ， '-' 操作，变量 x 和其对应系数。
 *
 * 如果方程没有解，请返回 "No solution" 。如果方程有无限解，则返回 “Infinite solutions” 。
 *
 * 如果方程中只有一个解，要保证返回值 'x' 是一个整数。
 *
 * @Author wyp168
 * @Date 2022/8/10 09:17
 */
public class SolveEquation {
    public static void main(String[] args) {
        SolveEquation solveEquation = new SolveEquation();
        String equation = "x+5-3+x=6+x-2";
        System.out.println(solveEquation.solveEquation(equation));
    }

    public String solveEquation(String equation) {
        //先将字符串以'='进行分割
        String[] arrEquations = equation.split("=");

        int left = 0;
        int right = 0;
        //将字符串中的'-' 换成'+-"
        String[] arr1 = arrEquations[0].replace("-", "+-").split("\\+");
        String[] arr2 = arrEquations[1].replace("-", "+-").split("\\+");

        //对左边字符串的处理
        for (String s : arr1) {
            if (s.equals("x")) {
                left += 1;
            } else if (s.equals("-x")) {
                left -= 1;
            } else if (s.contains("x")) {
                left += Integer.parseInt(s.substring(0,s.length() - 1));
            } else if (!s.equals("")) {
                right -= Integer.parseInt(s);
            }
        }

        //对右边字符串的处理
        //对左边字符串的处理
        for (String s : arr2) {
            if (s.equals("x")) {
                left -= 1;
            } else if (s.equals("-x")) {
                left += 1;
            } else if (s.contains("x")) {
                left -= Integer.parseInt(s.substring(0,s.length() - 1));
            } else if (!s.equals("")) {
                right += Integer.parseInt(s);
            }
        }

        if (left == 0) {
            if (right == 0) {
                return "Infinite solutions";
            } else {
                return "No solution";
            }
        }
        return "x=" + right / left;
    }
}
